import 'package:flutter/material.dart';

class MyApp3 extends StatefulWidget {
  MyApp3({super.key, required this.parentName});

  String parentName;

  // 1. 创建组件时调用
  @override
  State<MyApp3> createState() => _MyApp3State();
}

class _MyApp3State extends State<MyApp3> {
  int age = 18;
  String name = '张三';

  // 2. 组件被初始化时调用
  // 一般用于: 对组件变量赋值, 请求网络数据, 更新状态
  @override
  void initState() {
    print('initState');
    name = widget.parentName;
    super.initState();
  }

  // 3. 状态组件的依赖项发生变化时调用
  // 只会被执行1次
  @override
  void didChangeDependencies() {
    print('didChangeDependencies');
    super.didChangeDependencies();
  }

  /// 5. 组件即将销毁时自动调用的
  @override
  void deactivate() {
    print('deactivate');
    super.deactivate();
  }

  /// 6. 组件销毁时自动调用的
  @override
  void dispose() {
    print('dispose');
    super.dispose();
  }

  // 4. 组件状态更新时自动调用
  // 会调用多次
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          '组件生命周期',
          style: TextStyle(color: Colors.white, fontSize: 20),
        ),
        centerTitle: true,
        backgroundColor: Colors.orange,
      ),
      body: Center(child: Text('我叫$name,今年$age岁')),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            print('build');
            age = age + 1;
          });
        },
        child: Icon(Icons.add),
      ),
    );
  }
}
